const path = require('path')
const jwt = require("jsonwebtoken");
const { fileUploadError, unSupportedFileType, publishGoodsError, invalidGoodsID, invalidGoodsInfo } = require('../constant/err.type')
const { createGoods, updateGoods, removeGoods, restoreGoods, findGoods ,findGoodsById} = require('../service/goods.service')
class GoodContraller {

    // 上传物品图片
    async upload(ctx, next) {
     
      const { file } = ctx.request.files;
      
    //   const fileTypes = ['image/jpeg', 'image/png']
      if (file) {
        // if (!fileTypes.includes(file.type)) {
        //     return ctx.app.emit('error', unSupportedFileType, ctx)
        // }
           
        ctx.body = {
          code: 0,
          message: '图片上传成功',
          result: {
            good_img: path.basename(file.filepath),
          }
        }
        
      } else {
        return ctx.app.emit('error', fileUploadError, ctx)
      }
  
    }
    async create(ctx, next) {
        try {
            const { createAt, updatedAt, ...res } = await createGoods(ctx.request.body)

            ctx.body = {
                code: 0,
                message: '发布商品成功',
                result: res,
            }
        } catch (error) {
            console.error(err)
            return ctx.app.emit('error', publishGoodsError, ctx)
        }
    }
    async update(ctx) {
        try {

            const res = await updateGoods(ctx.params.id, ctx.request.body)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '修改商品信息成功！',
                    result: '',
                }
            } else {
                return ctx.app.emit('error', invalidGoodsID, ctx)
            }
        } catch (err) {
            console.error(err)
        }

    }
    async remove1(ctx) {
        try {
            const res = await removeGoods(ctx.params.id)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '商品下架成功！',
                    result: ''
                }
            } else {
                ctx.app.emit('error', invalidGoodsID, ctx)
            }
        } catch (err) {
            console.error(err)
        }
    }
    async renew(ctx) {
        try {
            const res = await restoreGoods(ctx.params.id)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '商品恢复上架成功！',
                    result: ''
                }
            } else {
                ctx.app.emit('error', invalidGoodsID, ctx)
            }
        } catch (err) {
            console.error(err)
        }
    }

    async findAllGoods(ctx) {
        try {
            const { pageNum = 1, pageSize = 10 } = ctx.request.query

            const res = await findGoods(pageNum, pageSize)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '获取商品列表成功',
                    result: res,
                }

            } else {
                ctx.app.emit('error', invalidGoodsInfo, ctx)
            }

        } catch (err) {
            console.error(err)
        }

    }
    async findGoodsById(ctx) {
        try {
            const res = await findGoodsById(ctx.params.id)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '获取商品信息成功',
                    result: res,
                }
            } else {
                ctx.app.emit('error', invalidGoodsID, ctx)
            }
        } catch (err) {
            console.error(err)
        }
    } 
}
module.exports = new GoodContraller()